package org.ch02.test00.demo03;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Parameter;

/**
 * 问题一： Java 语法的基本功
 * 问题二：字符串拼接 - + VS StringBuilder VS StringBuffer
 *
 * 问题三：考虑程序的健壮性
 * 问题四：考虑程序的封装性
 * 问题五：考虑程序的通用性
 *
 * 问题六：考虑程序的维护性（封装、命名）和扩展性（抽象）
 *
 * @author ZQX
 * @date 2025-03-19
 */
public class MainTest {
    public static void main(String[] args) {
        Class<?> clazz = String.class;
        Method[] methods = clazz.getMethods();
        System.out.println("方法的个数：" + methods.length);

        for (Method method : methods) {
            String name = method.getName();
            String modifiers = Modifier.toString(method.getModifiers());
            String typeName = method.getReturnType().getSimpleName();
            Parameter[] parameters = method.getParameters();
            Class<?>[] types = method.getParameterTypes();
            System.out.print(modifiers + " " + typeName + " " + name);

            // String arg0,int arg1
            System.out.print("(");
            for (Class<?> param : types) {
                for (int i = 0; i < parameters.length; i++) {
                    Parameter parameter = parameters[i];
                    System.out.print(param.getSimpleName() + " " + parameter.getName() + " ");
                    if (i == parameters.length - 1) {
                        System.out.print("");
                    } else {
                        System.out.print(",");
                    }
                }
            }

            System.out.print(")");
            System.out.println();
        }
    }
}
